export enum AuditAction {
  CREATE = 'CREATE',
  UPDATE = 'UPDATE',
  DELETE = 'DELETE',
  VIEW = 'VIEW',
  LOGIN = 'LOGIN',
  LOGOUT = 'LOGOUT'
}

export enum EntityType {
  QUESTION = 'QUESTION',
  EVALUATION = 'EVALUATION',
  USER = 'USER',
  ANSWER = 'ANSWER'
}

export interface AuditMetadata {
  ipAddress?: string;
  userAgent?: string;
  path?: string;
  method?: string;
  timestamp?: Date;
}

export interface CreateAuditLogDto {
  action: AuditAction;
  entityType: EntityType;
  entityId: string;
  userId: number;
  details?: Record<string, any>;
  metadata?: AuditMetadata;
}

export interface AuditLog extends CreateAuditLogDto {
  id: string;
  createdAt: Date;
  updatedAt: Date;
}

export interface AuditLogFilters {
  page?: number;
  limit?: number;
  action?: AuditAction;
  entityType?: EntityType;
  userId?: number;
  startDate?: Date;
  endDate?: Date;
}

export interface AuditLogQueryResult {
  logs: AuditLog[];
  total: number;
  page: number;
  limit: number;
  hasMore: boolean;
}
